package com.atguigu.spzx.gateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsConfigurationSource;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;

@Configuration
public class GatewayConfig {
    /*
        解决跨域：
            如果web启动器的项目：使用springmvc提供的@CrossOrigin注解解决
            如果是gateway项目： 使用CorsWebFilter
     */
    //网关依赖中提供了一个默认的过滤器 可以配置跨域
    @Bean
    public CorsWebFilter corsWebFilter(){
        //允许哪些客户端ip 以哪种方式 携带哪些头/cookie 来访问


        UrlBasedCorsConfigurationSource configurationSource = new UrlBasedCorsConfigurationSource();
        //使用UrlBasedCorsConfigurationSource 指定哪个规则的路径 的跨域配置
        // 一个具体的跨域配置
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true); //允许携带cookie跨域访问
        config.addAllowedHeader("*"); //允许跨域携带的头   * 通配所有
        config.addAllowedMethod("*"); //允许所有请求方式
//        config.addAllowedOrigin("*"); //允许所有的客户端跨域访问
        config.addAllowedOriginPattern("*"); //以后开发中可以手动配置允许的页面服务器
        configurationSource.registerCorsConfiguration("/**" ,config);
        return new CorsWebFilter(configurationSource);
    }

}
